package servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import coneccion.DocumentoIdentidadConsultas;
import coneccion.EstudiantesConsultas;
import coneccion.PropiedadesSistemaConsultas;
import coneccion.UsuariosConsultas;

import objetos.DocumentoIdentidad;
import objetos.Estudiante;

/**
 * 
 */
public class VotantesAsignados extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public VotantesAsignados() {
        super();

    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
		
		request.setCharacterEncoding( "UTF-8");
		
		String numeroPagina = request.getParameter("numeroPagina"); 
		Integer numeroMesa = null;
		
		
		Integer numeroPaginaInt = Integer.valueOf(0);
		Integer cantidadFilasPorPagina = Integer.valueOf(10);
		Integer cantidadVotantesPorMesa = Integer.valueOf(0);
		Integer cantidadPaginas = Integer.valueOf(1);
		Integer primerResultado = Integer.valueOf(0);
		
		List<Estudiante> listaVotantesPorMesa = null;
		
		PropiedadesSistemaConsultas propiedadesSistemaConsultas = new PropiedadesSistemaConsultas();
		String estadoVotacion = propiedadesSistemaConsultas.getEstadoVotacion();
		
		if(numeroPagina!=null && numeroPagina.length()>0){
			try{
				numeroPaginaInt = Integer.valueOf(numeroPagina);
				primerResultado = Integer.valueOf(numeroPaginaInt.intValue()*cantidadFilasPorPagina.intValue());
			}catch (Exception e) {
				numeroPaginaInt = Integer.valueOf(0);
			}
		}
		String nombreUsuario = request.getUserPrincipal().getName();
		if(nombreUsuario != null && nombreUsuario.length()>0){
			UsuariosConsultas usuariosConsultas = new UsuariosConsultas();
			numeroMesa = usuariosConsultas.getNumeroMesaAsignadoPorNombreUsuarioPresidenteMesa(nombreUsuario);  
		}
		if(numeroMesa!=null){
			EstudiantesConsultas estudiantesConsultas = new EstudiantesConsultas();
			cantidadVotantesPorMesa = estudiantesConsultas.getCantidadEstudiantesPorMesa(numeroMesa);
			
			if(cantidadVotantesPorMesa > cantidadFilasPorPagina){
				cantidadPaginas = cantidadVotantesPorMesa.intValue() / cantidadFilasPorPagina.intValue();
				if((cantidadVotantesPorMesa.intValue() % cantidadFilasPorPagina.intValue()) > 0){
					cantidadPaginas++;
				}			
			}
			
			if(numeroPaginaInt.intValue() + 1 > cantidadPaginas){
				numeroPaginaInt = Integer.valueOf(0);
				
			}
			
			listaVotantesPorMesa = estudiantesConsultas.getEstudiantesPorMesa(numeroMesa, primerResultado, cantidadFilasPorPagina);
		}
		request.setAttribute("estadoVotacion", estadoVotacion);
		request.setAttribute("numeroMesa", numeroMesa);
		request.setAttribute("listaVotantesPorMesa", listaVotantesPorMesa);
		request.setAttribute("cantidadPaginas", cantidadPaginas);
		request.setAttribute("numeroPagina", numeroPaginaInt);
		request.setAttribute("cantidadVotantesPorMesa", cantidadVotantesPorMesa);
		request.setAttribute("primerResultado", primerResultado);
		request.setAttribute("cantidadFilasPorPagina", cantidadFilasPorPagina);
		RequestDispatcher disp = request.getRequestDispatcher("pages/presidente_mesa/votantesAsignados.jsp");
		disp.forward(request, response);
	}

}
